import { NgModule } from '@angular/core';
import { NgxEchartsModule } from 'ngx-echarts';
import * as echarts from 'echarts';
import { CommonModule } from '@angular/common';
import { IconsProviderModule } from './icons-provider.module';

import { ExtractRoutingModule } from './extract-routing.module'

import { NzTableModule } from 'ng-zorro-antd/table';
import { NzDividerModule } from 'ng-zorro-antd/divider';
import { NzModalModule } from 'ng-zorro-antd/modal';
import { NzInputModule } from 'ng-zorro-antd/input';
import { NzIconModule } from 'ng-zorro-antd/icon';
import { NzTabsModule } from 'ng-zorro-antd/tabs';
import { NzSelectModule } from 'ng-zorro-antd/select';
import { NzSwitchModule } from 'ng-zorro-antd/switch';
import { NzCheckboxModule } from 'ng-zorro-antd/checkbox';
import { NzButtonModule } from 'ng-zorro-antd/button';
import { NzRadioModule } from 'ng-zorro-antd/radio';
import { NzPaginationModule } from 'ng-zorro-antd/pagination';
import { NzEmptyModule } from 'ng-zorro-antd/empty';
import { NzUploadModule } from 'ng-zorro-antd/upload';
import { NzCollapseModule } from 'ng-zorro-antd/collapse';
import { FormsModule } from '@angular/forms';
import { NzMenuModule } from 'ng-zorro-antd/menu';
import {NzDropDownModule} from 'ng-zorro-antd/dropdown';
import { NzMessageModule } from 'ng-zorro-antd/message';
import { NzProgressModule } from 'ng-zorro-antd/progress';
import { NzTimelineModule } from 'ng-zorro-antd/timeline';
import { NzDrawerModule } from 'ng-zorro-antd/drawer';
import { NzInputNumberModule } from 'ng-zorro-antd/input-number';
import { NzTreeModule } from 'ng-zorro-antd/tree';
import { NzAlertModule } from 'ng-zorro-antd/alert';

import { ExtractComponent } from './extract.component';
import { ExtractTemplateComponent } from './components/extract-template/extract-template.component';
import { ExtractDatasetComponent } from './components/extract-dataset/extract-dataset.component';
import { ExtractTagComponent } from './components/extract-tag/extract-tag.component';
import { ExtractTagEditComponent } from './components/extract-tag-edit/extract-tag-edit.component';
import { ExtractModelComponent } from './components/extract-model/extract-model.component';
import { ExtractTrainComponent } from './components/extract-train/extract-train.component';
import { ModelAssessmentComponent } from './components/model-assessment/model-assessment.component';
import { AppAssessmentComponent } from './components/app-assessment/app-assessment.component';
import { ModelDeployComponent } from './components/model-deploy/model-deploy.component';

import { IconDefinition } from '@ant-design/icons-angular';


import * as AllIcons from '@ant-design/icons-angular/icons';

const antDesignIcons = AllIcons as {
  [key: string]: IconDefinition;
};
const icons: IconDefinition[] = Object.keys(antDesignIcons).map(key => antDesignIcons[key])

@NgModule({
  declarations: [
    ExtractComponent,
    ExtractTemplateComponent,
    ExtractDatasetComponent,
    ExtractTagComponent,
    ExtractTagEditComponent,
    ExtractModelComponent,
    ExtractTrainComponent,
    ModelAssessmentComponent,
    AppAssessmentComponent,
    ModelDeployComponent
  ],
  imports: [
    CommonModule,
    ExtractRoutingModule,IconsProviderModule,
    NzTableModule,NzDrawerModule,NzAlertModule,
    NzDividerModule, NzModalModule, NzInputModule, NzIconModule, NzTabsModule,
    NzSelectModule, NzSwitchModule, NzCheckboxModule, FormsModule, NzButtonModule,
    NzRadioModule, NzPaginationModule, NzEmptyModule, NzUploadModule, NzCollapseModule,
    NzMenuModule,NzTimelineModule,NzTreeModule,
    NzMessageModule ,NzInputNumberModule,
    NzDropDownModule,NzProgressModule,
    NgxEchartsModule.forRoot({echarts}),NzIconModule.forRoot(icons)
  ]
})
export class ExtractModule { }
